#include <fstream>
#include <sstream>
#include <iostream>
#include "types.h"
/*
 * pent_low.h
 *
 *  Created on: Jul 1, 2011
 *      Author: denis
 */

#ifndef PENT_LOW_H_
#define PENT_LOW_H_



class Pentamino_Low {

	pentaminos_vector* ipentaminos_vector;
	std::ofstream* destfile;
	longvector::iterator element;
	int subs(unsigned long long figure,int step,unsigned long long filter,unsigned long long boundary);

public:
	Pentamino_Low(longvector* previous_steps_array,	pentaminos_vector* pentaminos_array, std::ofstream* in_destfile);
	int idepth;
	unsigned long long current_field_status;
	longvector* iprevious_steps_array;
	void printsolution();
	int xsubs(unsigned long long figure);
	int ysubs(unsigned long long figure);
	bool CheckRegions(unsigned long long m_field);
	unsigned long long cur_fil_upd();
	void trim_to_depth(int tdepth);
	longvector* rot_depth(int f_depth);
	bool isSameFigure(unsigned long long template_figure,unsigned long long figure);
	bool Check11(unsigned long long field);
};
#endif /* PENT_LOW_H_ */
